<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // console.log(1);
    // // Promise 是一个同步代码
    // const p = new Promise((resolve, reject) => {
    //   console.log(4);
    //   resolve(3)
    // })
    // // // Promise.then()是一个异步代码
    // p.then(res => {
    //   console.log(res);
    // })
    // console.log(2);
    // //1423

    /* 1、先走同步代码，再走异步代码
       2、异步代码中又分为宏任务和微任务
          微任务先走
          宏任务后走
    */
    /* 同步 */
    // console.log(1)
    // /* 异步===宏任务 */
    // setTimeout(() => {
    //   console.log(2)
    // }, 0)
    // const p = new Promise((resolve) => {
    //   /* 同步 */
    //   console.log(3)
    //   resolve(4)
    // })
    // /* 异步 ===微任务 */
    // p.then(res => {
    //   console.log(res)
    // })
    // const p2 = new Promise((resolve) => {
    //   console.log(5) /* 同步 */
    //   resolve(6)
    // })
    // /* 异步 ===微任务 */
    // p2.then(res => {
    //   console.log(res)
    // })
    // /* 同步 */
    // console.log(7)


    console.log(1)// 同步
    setTimeout(() => {
      console.log(2)//异步宏任务
      const p = new Promise((resolve) => resolve(3))
      p.then(res => console.log(res)) //异步微任务
    }, 0)
    const p = new Promise(resolve => {
      setTimeout(() => console.log(4), 0)//异步宏任务
      resolve(5)
    })
    p.then(res => { console.log(res) })//异步微任务
    const p2 = new Promise(resolve => resolve(6))
   
    console.log(7)// 同步
    p2.then(res => console.log(res))//异步微任务

  </script>
</body>

</html>